Multi-threaded software provides multiple execution “threads” which act like independently executing programs. An advantage to such multi-threaded software is that each thread can be assigned to an independent processor, or to a single processor that provides multi-threaded execution so that the threads may be executed in parallel for improved speed of execution. Each of the threads in a multi-threaded program may need to modify common data shared among the threads. However, if the threads are not coordinated in their use of the common data, serious errors can occur. Typically, a programmer uses another computer program commonly referred to as a “debugger” to “debug” a multi-threaded program under development to ensure that all aspects of a multi-threaded program employed are operational, and that any critical situations that may occur are not missed during debugging. As such, there is a need for programmers to effectively identify, locate, analyze and/or correct suspected faults in a multi-threaded program during the process of “debugging” a program.